<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div id="app" style="width: 300px;height: 300px; background: red"></div>
    <script>
        // function Bar() {
        //     console.log(arguments)
        //     console.log(new.target)
        //         // new.target  实用：控制类可继承不可自己实例化
        //         //  Bar直接被调用==>undefined
        //         //  new Bar()  ===> Bar
        //         //  被继承（extends） 返回子类
        // };
        // const Foo = () => {
        //     console.log(arguments)
        // };
        // // console.log(Bar.prototype);
        // // console.log(Foo.prototype) // 箭头函数没有prototype
        // // console.log(new Bar())
        // // console.log(new Foo()) // 构造函数不能用箭头函数
        // // console.log(Bar.__proto__.call)
        // // console.log(Foo.__proto__.call) // 箭头函数属于函数所以有Function的原型
        // Bar(1)
        // new Bar(1)
        // Foo(2)

        // function debounce(fn, wait) {
        //     let timeout = null
        //     return function (...arg) {
        //         if (timeout) {
        //             clearTimeout(timeout);
        //         }
        //         timeout = setTimeout(function () {
        //             fn.apply(this, arg)
        //         }, wait)
        //     }
        // }
        // function throttle(fn, wait) {
        //     let timeout = Date.now();
        //     return function (...arg) {
        //         if (Date.now() - timeout > wait) {
        //             fn.apply(this, arg)
        //             timeout = Date.now()
        //         }
        //     }
        // }
        // const appDom = document.getElementById('app');
        // appDom.onmousemove = throttle(handleMove, 1000)

        // function handleMove() {
        //     console.log(1111111)
        // }

        const a = 1;
        const obj = {
            a: 2
        }
        with (obj) {
            console.log(a)
            var foo = new Function(obj, 'console.log(a)')
            foo()
        }
    </script>
</body>

</html>